serializer
Implement a serializer for caching data to and from version controlled files.
Attributes⚓︎
Classes⚓︎
UnconvertableError ⚓︎
Bases: ValueError
Custom Error to indicate conversion failure.
Source code in pytest_cache_assert/_check_assert/serializer.py
class UnconvertableError(ValueError):
"""Custom Error to indicate conversion failure."""
Functions⚓︎
dumps ⚓︎
dumps(obj, *, sort_keys=False, indent=0)
Serialize object to str.
| PARAMETER | DESCRIPTION |
|---|---|
obj |
data to serialize
TYPE:
|
sort_keys |
if True, order keys before serializing
TYPE:
|
indent |
indent for pretty-printing. Default is no extra whitespace
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
str
|
serialized data
TYPE:
|
| RAISES | DESCRIPTION |
|---|---|
UnconvertableError
|
when serialization fails |
Source code in pytest_cache_assert/_check_assert/serializer.py
@beartype
def dumps(obj: Any, *, sort_keys: bool = False, indent: int = 0) -> str:
"""Serialize object to str.
Args:
obj: data to serialize
sort_keys: if True, order keys before serializing
indent: indent for pretty-printing. Default is no extra whitespace
Returns:
str: serialized data
Raises:
UnconvertableError: when serialization fails
"""
try:
return json.dumps(obj, sort_keys=sort_keys, indent=indent or None, cls=_CacheAssertSerializer)
except UnconvertableError as exc:
msg = f'Conversion error. Try specifying new converters in AssertConfig to fix: {exc}' # noqa: E501
raise UnconvertableError(msg) from exc
loads ⚓︎
loads(raw)
Deserialize arbitrary JSON data back to Python types.
| PARAMETER | DESCRIPTION |
|---|---|
raw |
raw string JSON
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
T_DIFF
|
DiffResults-safe data
TYPE:
|
Source code in pytest_cache_assert/_check_assert/serializer.py
@beartype
def loads(raw: str) -> T_DIFF:
"""Deserialize arbitrary JSON data back to Python types.
Args:
raw: raw string JSON
Returns:
T_DIFF: DiffResults-safe data
"""
return json.loads(raw)
make_diffable ⚓︎
make_diffable(data)
Convert raw object to diffable types for assertion checks.
| PARAMETER | DESCRIPTION |
|---|---|
data |
data to serialize
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
T_DIFF
|
DiffResults-safe data
TYPE:
|
Source code in pytest_cache_assert/_check_assert/serializer.py
@beartype
def make_diffable(data: Any) -> T_DIFF:
"""Convert raw object to diffable types for assertion checks.
Args:
data: data to serialize
Returns:
T_DIFF: DiffResults-safe data
"""
return loads(dumps(data))
pretty_dumps ⚓︎
pretty_dumps(obj)
Serialize object to a pretty-printable str.
| PARAMETER | DESCRIPTION |
|---|---|
obj |
data to serialize
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
str
|
serialized data
TYPE:
|
Source code in pytest_cache_assert/_check_assert/serializer.py
@beartype
def pretty_dumps(obj: Any) -> str:
"""Serialize object to a pretty-printable str.
Args:
obj: data to serialize
Returns:
str: serialized data
"""
return dumps(obj, sort_keys=True, indent=2).strip() + '\n'
register_user_converters ⚓︎
register_user_converters(converters)
Register the user-specified converters.
Source code in pytest_cache_assert/_check_assert/serializer.py
@beartype
def register_user_converters(converters: List[Converter]) -> None:
"""Register the user-specified converters."""
for converter in converters:
_CONVERTERS.register(converter.types, converter.func)
Created: August 30, 2023